package com.brucekong.slm.service.user;

import com.brucekong.slm.mapper.user.UserMapper;
import com.brucekong.slm.model.user.UserDomain;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class UserService {

    @Resource
    private UserMapper userMapper;//这里会报错，但是并不会影响

    public int addUser(UserDomain user) {

        return userMapper.insert(user);
    }

    public int deleteUser(String userId) {

        return userMapper.delete(userId);
    }

    public int updateUser(String userName, String password) {

        return userMapper.update(userName, password);
    }

    public UserDomain getUser(String userId) {

        return userMapper.select(userId);
    }

    public UserDomain getUserByUserName(String userName) {

        return userMapper.getUserByUserName(userName);
    }

    public UserDomain getUserWithoutPasswordByUserName(String userName) {

        return userMapper.getUserWithoutPasswordByUserName(userName);
    }

    /*
     * 这个方法中用到了我们开头配置依赖的分页插件pagehelper
     * 很简单，只需要在service层传入参数，然后将参数传递给一个插件的一个静态方法即可；
     * pageNum 开始页数
     * pageSize 每页显示的数据条数
     * */
    public PageInfo<UserDomain> findAllUser(int pageNum, int pageSize, String userId) {
        //将参数传给这个方法就可以实现物理分页了，非常简单。
        PageHelper.startPage(pageNum, pageSize);
        List<UserDomain> userDomains = userMapper.selectUsers(userId);
        return new PageInfo<>(userDomains);
    }

    public PageInfo<UserDomain> findAllUser(int pageNum, int pageSize) {
        //将参数传给这个方法就可以实现物理分页了，非常简单。
        PageHelper.startPage(pageNum, pageSize);
        List<UserDomain> userDomains = userMapper.selectUsers();
        return new PageInfo<>(userDomains);
    }

    public UserDomain getUserWithoutPasswordByLoginId(String userId) {
        return userMapper.getUserWithoutPasswordByLoginId(userId);
    }

    public void register(String userName, String password) {
        userMapper.register(userName, password);
    }
}